The QWERTY keyboard is entrenched as the preferred device for typing alpha-numeric data into a computer. Various apparatus and methods are known for pointing operations, such as selecting text, on a CRT display. Devices for that purpose include the mouse, joystick, step keys and text keys. Keyboards are known which include a joystick, joydisk or other pointing device mounted on the keyboard. However, a separate mouse has been shown to be the most effective pointing device with respect to operating time, error rate and the like. This accounts for its widespread acceptance in the computer industry.
Use of a conventional keyboard and a discrete mouse for entering typing and pointing information, respectively, into a computer require physical and mental disruptions that significantly reduce a user's productivity. For example, typing on a keyboard and pointing with a mouse require the user frequently to move the hands back and forth between the keyboard and the mouse. One research paper reports that it takes about 0.36 seconds to move a hand from the keyboard onto a mouse and additional time to adjust the grasp for operating the mouse buttons. Time to return to the keyboard must be considered as well. The data suggests that the total time spent moving to and from the mouse is greater than one second per occurrence. See S. K. Card, et al, "Evaluation of Mouse, Rate-Controlled Isometric Joystick, Step Keys, and Text Keys for Text Selection on a CRT" (Xerox Palo Alto Research Center), published in Ergonomics, Vol. 2, No. 8, 601-613 (1978).
These movements between keyboard and mouse are disruptive physically because of the distances and side to side arm motions typically required. These movements are disruptive mentally because of the time the movements take, because of the dramatic shift in physical activity (typing on a keyboard is very unlike pointing with a mouse), and because of many mental and physical steps required to perform the movements. Each additional step requires physical and mental effort and is an opportunity for error.
U.S. Pat. No. 4,712,101 describes a cursor positioning device which may be positioned on a keyboard below the space bar. Such a device has been announced under the trade name Isopoint. The Isopoint device includes a finger or thumb actuated roller coupled to a rotary-shaft encoder for indicating position change in a first direction. The roller rests in a sliding cradle which drives a second encoder. Such a device is awkward to operate, especially for diagonal cursor movement, because of the required combination of rolling and sliding actions. Additionally, the sliding cradle has fixed end points which impose discontinuities in its operation.
Another pointing device which can be embedded into a conventional keyboard for cursor control is the OmniPoint.TM. cursor controller, announced by Osiris Technologies, Inc., Nevada City, Ca. Omnipoint essentially includes a miniature joystick and associated interface electronics. The joystick may be mounted in a keyboard adjacent the standard array of keys. Its use of course requires moving the hand away from the usual typing position.
Both the Isopoint and Omnipoint devices include an embedded switch so that the user can press the device downward (into the keyboard) to emulate a mouse button "click" or dragging operation. Such devices therefore can emulate at best only a single button mouse.
U.S. Pat. No. 4,680,577 to Straayer, et al. shows a multipurpose keyswitch disposed within a keyboard array for controlling cursor movement on a CRT display and for character entry. One of the standard alpha keys is replaced with the multipurpose keyswitch. An additional keyswitch is suggested for activating the cursor positioning capabilities of the multipurpose keyswitch. The '577 patent does not disclose a practical way to implement and use such a system. Additionally, that patent does not address how to input any pointing event information, for example mouse button actions ("clicking"), so that system cannot substitute for a mouse. What is needed is a practical method of allowing a user to type and point without moving the hands away from the usual typing position and without dramatically changing the physical activity.
Prior art methods of pointing and typing assumed these disruptions and incorporated them as limitations in computers, keyboards, pointing devices, and software. Typing and pointing were perceived as distinct and irreconcilable activities.
As a result, there is considerable duplication of hardware and software. For example, the buttons on a mouse are required because pointing has been perceived as very different, mentally and physically, from typing. Since pointing is so different, the hardware and software are duplicated, reinforcing the separation. For example, the buttons on a mouse are duplications because there are plenty of keys on the keyboard that generally are not being used while the mouse is being used. What is needed is a pointing device system that eliminates the restrictions and the duplications of present systems, while maintaining the same software interface to application programs for complete compatibility.
Many known pointing devices also have physical limitations on the number of buttons they can have. These limitations severely limit the range of actions the user can take while pointing. One commercial product that attempts to add additional buttons, called the PowerMouse 100, integrates a two-button mouse with forty programmable keys, resulting in a large, cumbersome device that is difficult to use. What is needed is to allow the user to keep the hands on the keyboard while pointing, and simultaneously allow the user to input other pointing related data or "pointing events," presently input by mouse buttons, but again without moving the hands from the usual typing position.
Another problem overlooked in the prior art is that of visually locating the cursor image on a display screen. Each time a user stops typing and grasps a mouse to point, he has to search the display screen visually for the cursor, or actuate the pointing device in such a way that the moving cursor will be noticed. These methods are time consuming and may be disruptive. If the cursor image is mostly off screen, it can be extremely difficult to locate the cursor. In some cases, just one pixel is showing. With some software, moving the cursor onto certain areas of the screen indicates the desire for a particular action to be taken. If the user does not wish this action to be taken, they must perform additional steps to cancel the implied indication. What is needed is for the user to immediately detect the location of the cursor on the screen at the time pointing begins.
Known methods of repositioning a cursor in response to signals from a pointing device do not compensate for the many different modes and resolutions of available display systems. Two programs that configure the display system differently may exhibit different apparent cursor repositioning responses to the same pointing device signals. What is needed is a method of cursor repositioning that compensates for changes in the display system so that the same action performed by the user with the pointing device will produce a similar result independent of changes in the display system.
Adjusting cursor speed is another clumsy and time consuming action. Known methods of changing cursor speed introduce discontinuities that seriously disrupt the user's work flow. As a result, many people simply tolerate an inappropriate and therefore inefficient cursor speed because it is too cumbersome and too burdensome to change it.
For example, a typical mouse requires that the user first stop the application program in progress, and then execute a special mouse speed changing program, where the speed is specified by typing in a number. The resulting cursor speed cannot be observed until the application program is restarted. The user may find another adjustment is necessary and have to repeat the process.
Other known methods involve pressing keyboard keys and mouse buttons simultaneously, but these schemes are not continuous and interfere with the operation of certain application programs. What is needed is to afford a user fast, interactive ways to control cursor speed without significant interruption of work in progress.